Struttura System.Nullable<T>
Questo articolo fornisce osservazioni supplementari alla documentazione di riferimento per questa API.
La Nullable classe rappresenta un tipo di valore a cui è possibile assegnare null
.
Un tipo è detto nullable se può essere assegnato un valore o può essere assegnato null
, il che significa che il tipo non ha alcun valore. Per impostazione predefinita, tutti i tipi di riferimento, ad esempio String, sono nullable, ma tutti i tipi valore, ad esempio Int32, non sono .
In C# e Visual Basic si contrassegna un tipo di valore come nullable usando la ?
notazione dopo il tipo di valore. Ad esempio, int?
in C# o Integer?
in Visual Basic dichiara un tipo di valore intero a cui è possibile assegnare null
.
La Nullable<T> struttura supporta l'uso solo di un tipo valore come tipo nullable perché i tipi reference sono nullable per progettazione.
La Nullable classe fornisce supporto complementare per la Nullable<T> struttura. La Nullable classe supporta l'acquisizione del tipo sottostante di un tipo nullable e le operazioni di confronto e uguaglianza su coppie di tipi nullable il cui tipo di valore sottostante non supporta operazioni di confronto ed uguaglianza generiche.
Proprietà fondamentali
I due membri fondamentali della Nullable<T> struttura sono le HasValue proprietà e Value . Se la HasValue proprietà per un Nullable<T> oggetto è true
, è possibile accedere al valore dell'oggetto con la Value proprietà . Se la HasValue proprietà è false
, il valore dell'oggetto non è definito e un tentativo di accesso alla Value proprietà genera un'eccezione InvalidOperationException.
Boxing e unboxing
Quando un tipo nullable viene sottoposto a boxing, Common Language Runtime riquadri automaticamente il valore sottostante dell'oggetto Nullable<T> , non l'oggetto Nullable<T> stesso. Ovvero, se la HasValue proprietà è true
, il contenuto della Value proprietà viene sottoposto a boxing. Quando il valore sottostante di un tipo nullable è unboxed, Common Language Runtime crea una nuova Nullable<T> struttura inizializzata sul valore sottostante.
Se la HasValue
proprietà di un tipo nullable è false
, il risultato di un'operazione boxing è null
. Di conseguenza, se un tipo boxed nullable viene passato a un metodo che prevede un argomento dell'oggetto, tale metodo deve essere preparato per gestire il caso in cui l'argomento è null
. Quando null
è unboxed in un tipo nullable, Common Language Runtime crea una nuova Nullable<T> struttura e ne inizializza la HasValue
proprietà in false
.
Componenti di Windows Runtime
È possibile includere un Nullable<T> tipo come membro di una struttura esportata in una libreria WinMD.